package cn.fan.redis;

import cn.fan.mapper.UserInvestMapper;
import cn.fan.pojo.UserInvest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class UserInvestRedis {
    private static final String USERINVEST = "userinvest";
    private static final String USERINVESTLIST = "userinvest:list";

    @Autowired
    private UserInvestMapper userInvestMapper;

    @Cacheable(value = USERINVEST,key = "#id")
    public UserInvest getById(int id){
        return userInvestMapper.selectById(id);
    }

    @CachePut(value = USERINVEST,key = "#id")
    public UserInvest putById(int id){
        return userInvestMapper.selectById(id);
    }

    @CachePut(value = USERINVEST,key = "#id")
    public UserInvest putById(int id,UserInvest UserInvest){
        return UserInvest;
    }

    @CacheEvict(value = USERINVEST,key = "#id")
    public void delete(int id){}

    // list
    @Cacheable(value = USERINVESTLIST ,key = "#userId")
    public List<UserInvest> getList(long userId){
        LambdaQueryWrapper<UserInvest> queryWrapper = new LambdaQueryWrapper<UserInvest>();
        queryWrapper.eq(UserInvest::getUserid,userId);
        List<UserInvest> list = userInvestMapper.selectList(queryWrapper);
        return list;
    }

    @CachePut(value = USERINVESTLIST,key = "#userId")
    public List<UserInvest> putList(long userId){
        LambdaQueryWrapper<UserInvest> queryWrapper = new LambdaQueryWrapper<UserInvest>();
        queryWrapper.eq(UserInvest::getUserid,userId);
        List<UserInvest> list = userInvestMapper.selectList(queryWrapper);
        return list;
    }

    @CachePut(value = USERINVESTLIST,key = "#userId")
    public List<UserInvest> putList(List<UserInvest> UserInvests){
        return UserInvests;
    }

    @CacheEvict(value = USERINVESTLIST,key = "#userId")
    public void deleteList(){}
}
